home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue30 / vssdigi / VSSDIGI.ZIP / Examples / main.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-12-19  |  6.2 KB  |  249 lines

  1. //******************************************************************************
  2. //                        VARIAN LED STUDIO v2.00
  3. //               (c) VARIAN SOFTWARE SERVICES NL 1996-1997
  4. //                          ALL RIGHTS RESERVED
  5. //******************************************************************************
  6. unit main;
  7.  
  8. interface
  9.  
  10. uses
  11.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  12.   StdCtrls, vrlcd, ExtCtrls, MPlayer, Buttons, vrgrad, vrscan,
  13.   vrleds, mmsystem, ToolWin, ComCtrls, vrmatrix, vrtrack, vrbltr, VrClass,
  14.   vrgauge;
  15.  
  16. type
  17.   TMainForm = class(TForm)
  18.     VrGradient: TVrGradient;
  19.     DisplayPanel: TPanel;
  20.     Timer: TTimer;
  21.     MediaPlayer: TMediaPlayer;
  22.     Panel1: TPanel;
  23.     ButtonPlay: TButton;
  24.     ButtonStop: TButton;
  25.     ButtonPause: TButton;
  26.     ButtonPrev: TButton;
  27.     ButtonNext: TButton;
  28.     ButtonEject: TButton;
  29.     VrBlotter1: TVrBlotter;
  30.     Label7: TLabel;
  31.     VrCurTrack: TVrNum;
  32.     Label1: TLabel;
  33.     Label3: TLabel;
  34.     VrClockCurTrackTime: TVrClock;
  35.     VrClockTotalTrackTime: TVrClock;
  36.     Label2: TLabel;
  37.     Label4: TLabel;
  38.     ModeLabel: TLabel;
  39.     VrScanner1: TVrScanner;
  40.     VrLed1: TVrLed;
  41.     Label5: TLabel;
  42.     VrNumTotalTracks: TVrNum;
  43.     Label6: TLabel;
  44.     VrClockDiskTime: TVrClock;
  45.     Label8: TLabel;
  46.     VrClock1: TVrClock;
  47.     VrGauge1: TVrGauge;
  48.     procedure ButtonPlayClick(Sender: TObject);
  49.     procedure ButtonStopClick(Sender: TObject);
  50.     procedure ButtonPauseClick(Sender: TObject);
  51.     procedure ButtonPrevClick(Sender: TObject);
  52.     procedure ButtonNextClick(Sender: TObject);
  53.     procedure ButtonEjectClick(Sender: TObject);
  54.     procedure FormCreate(Sender: TObject);
  55.     procedure MediaPlayerNotify(Sender: TObject);
  56.     procedure TimerTimer(Sender: TObject);
  57.     procedure FormDestroy(Sender: TObject);
  58.   private
  59.     procedure CheckDisk;
  60.     procedure CheckPosition;
  61.     procedure ResetControls;
  62.   public
  63.     { Public declarations }
  64.   end;
  65.  
  66. var
  67.   MainForm: TMainForm;
  68.  
  69. implementation
  70.  
  71. {$R *.DFM}
  72.  
  73.  
  74. procedure TMainForm.FormCreate(Sender: TObject);
  75. begin
  76.   MediaPlayer.TimeFormat := tfTMSF;
  77.   MediaPlayer.Wait := true;
  78.   MediaPlayer.Notify := false;
  79.   MediaPlayerNotify(self);
  80. end;
  81.  
  82. procedure TMainForm.FormDestroy(Sender: TObject);
  83. begin
  84.   MediaPlayer.Stop;
  85.   MediaPlayer.Close;
  86. end;
  87.  
  88. procedure TMainForm.TimerTimer(Sender: TObject);
  89. var
  90.   Mode: TMPModes;
  91. begin
  92.   Mode := MediaPlayer.Mode;
  93.   if not (Mode in [mpStopped, mpPlaying]) then
  94.   begin
  95.     MediaPlayer.Open;
  96.     MediaPlayerNotify(self);
  97.   end;
  98.   if Mode = mpPlaying then
  99.   begin
  100.     CheckPosition;
  101.     VrLed1.Active := true;
  102.     VrScanner1.Active := true;
  103.   end
  104.  else
  105.   begin
  106.     VrLed1.Active := false;
  107.     VrScanner1.Active := false;
  108.   end;
  109. end;
  110.  
  111. procedure TMainForm.ResetControls;
  112. begin
  113.   VrNumTotalTracks.Value := 0;
  114.   VrClockDiskTime.Hours := 0;
  115.   VrClockDiskTime.Minutes := 0;
  116.   VrClockCurTrackTime.Hours := 0;
  117.   VrClockCurTrackTime.Minutes := 0;
  118.   VrCurTrack.Value := 0;
  119.   VrClockTotalTrackTime.Hours := 0;
  120.   VrClockTotalTrackTime.Minutes := 0;
  121.   VrGauge1.Position := 0;
  122. end;
  123.  
  124. procedure TMainForm.ButtonPlayClick(Sender: TObject);
  125. begin
  126.   MediaPlayer.Play;
  127.   MediaPlayerNotify(self);
  128. end;
  129.  
  130. procedure TMainForm.ButtonStopClick(Sender: TObject);
  131. begin
  132.   MediaPlayer.Stop;
  133.   MediaPlayerNotify(self);
  134. end;
  135.  
  136. procedure TMainForm.ButtonPauseClick(Sender: TObject);
  137. begin
  138.   MediaPlayer.Pause;
  139.   MediaPlayerNotify(self);
  140. end;
  141.  
  142. procedure TMainForm.ButtonPrevClick(Sender: TObject);
  143. begin
  144.   MediaPlayer.Previous;
  145.   MediaPlayerNotify(self);
  146. end;
  147.  
  148. procedure TMainForm.ButtonNextClick(Sender: TObject);
  149. begin
  150.   MediaPlayer.Next;
  151.   MediaPlayerNotify(self);
  152. end;
  153.  
  154. procedure TMainForm.ButtonEjectClick(Sender: TObject);
  155. begin
  156.   MediaPlayer.Eject;
  157.   MediaPlayer.Close;
  158.   MediaPlayerNotify(self);
  159. end;
  160.  
  161. procedure TMainForm.MediaPlayerNotify(Sender: TObject);
  162. const
  163.   ModeStr: array[TMPModes] of string[10] = ('NOT READY', 'STOPPED', 'PLAYING',
  164.     'RECORDING', 'SEEKING', 'PAUSED', 'OPEN');
  165. begin
  166.   ModeLabel.Caption := '* ' + ModeStr[MediaPlayer.Mode];
  167.   case MediaPlayer.Mode of
  168.     mpNotReady:;
  169.     mpStopped:
  170.       begin
  171.         CheckDisk;
  172.         CheckPosition;
  173.         ButtonPlay.Enabled := true;
  174.         ButtonStop.Enabled := false;
  175.         ButtonPause.Enabled := false;
  176.         ButtonNext.Enabled := true;
  177.         ButtonPrev.Enabled := true;
  178.         ButtonEject.Enabled := true;
  179.       end;
  180.     mpPlaying:
  181.       begin
  182.         CheckDisk;
  183.         ButtonPlay.Enabled := false;
  184.         ButtonStop.Enabled := true;
  185.         ButtonPause.Enabled := true;
  186.         ButtonEject.Enabled := true;
  187.         ButtonPrev.Enabled := true;
  188.         ButtonNext.Enabled := true;
  189.       end;
  190.     mpSeeking:;
  191.     mpPaused:;
  192.     mpOpen:
  193.       begin
  194.         ButtonPlay.Enabled := false;
  195.         ButtonStop.Enabled := false;
  196.         ButtonPause.Enabled := false;
  197.         ButtonPrev.Enabled := false;
  198.         ButtonNext.Enabled := false;
  199.         ButtonEject.Enabled := false;
  200.         ResetControls;
  201.       end;
  202.     else ModeLabel.Caption := '* MODE';
  203.   end;
  204. end;
  205.  
  206. procedure TMainForm.CheckDisk;
  207. var
  208.   NTracks, NLen: Integer;
  209. begin
  210.   NTracks := MediaPlayer.Tracks;
  211.   NLen := MediaPlayer.Length;
  212.   VrNumTotalTracks.Value := NTracks;
  213.   VrClockDiskTime.Hours := MCI_MSF_MINUTE(NLen);
  214.   VrClockDiskTime.Minutes := MCI_MSF_SECOND(NLen);
  215. end;
  216.  
  217. procedure TMainForm.CheckPosition;
  218. var
  219.   CurrentTrack, CurrentPos, TrackLen: Integer;
  220.   Mt, Pt, M, S: Integer;
  221. begin
  222.   CurrentPos := MediaPlayer.Position;
  223.   VrClockCurTrackTime.Hours := MCI_TMSF_MINUTE(CurrentPos);
  224.   VrClockCurTrackTime.Minutes := MCI_TMSF_SECOND(CurrentPos);
  225.  
  226.   CurrentTrack := MCI_TMSF_TRACK (CurrentPos);
  227.   VrCurTrack.Value := CurrentTrack;
  228.  
  229.   TrackLen := MediaPlayer.TrackLength [CurrentTrack];
  230.   VrClockTotalTrackTime.Hours := MCI_MSF_MINUTE(TrackLen);
  231.   VrClockTotalTrackTime.Minutes := MCI_MSF_SECOND(TrackLen);
  232.  
  233.   Application.ProcessMessages;
  234.  
  235.   M := MCI_MSF_MINUTE(TrackLen);
  236.   S :=  MCI_MSF_SECOND(TrackLen);
  237.   Mt := (M * 60) + S;
  238.  
  239.   M := MCI_TMSF_MINUTE(CurrentPos);
  240.   S := MCI_TMSF_SECOND(CurrentPos);
  241.   Pt := (M * 60) + S;
  242.  
  243.   VrGauge1.Max := Mt;
  244.   VrGauge1.Position := Pt;
  245. end;
  246.  
  247.  
  248. end.
  249.